package dominio;

import java.util.ArrayList;

import util.ConexaoBanco;
import exceptions.PessoaNotExistentException;

public class Agenda {
	private ArrayList<Pessoa> pessoas;

	public Agenda() {
		setPessoas(new ArrayList<Pessoa>());
	}

	public ArrayList<Pessoa> getPessoas() {
		return pessoas;
	}

	public void setPessoas(ArrayList<Pessoa> pessoas) {
		this.pessoas = pessoas;
	}

	/**
	 * Adiciona uma pessoa na agenda
	 * @param pessoa Pessoa que vai ser adicionada na agenda
	 */
	public void addPessoa(Pessoa pessoa) {
		pessoas.add(pessoa);
	}

	/**
	 * Remove uma pessoa da agenda.
	 * @param pessoa Pessoa que vai ser removida da agenda.
	 * @throws PessoaNotExistentException Exce��o lan�ada caso a pessoa n�o exista na agenda.
	 */
	public void removePessoa(Pessoa pessoa) throws PessoaNotExistentException {
		if (pessoas.contains(pessoa)) {
			pessoas.remove(pessoa);
		} else {
			throw new PessoaNotExistentException("Este contato n�o existe na agenda.");
		}
	}

	/**
	 * Atualiza uma pessoa existente na agenda.
	 * @param pessoa Pessoa a ser atualizada.
	 * @return true caso a pessoa tenha sido atualizada com sucesso.
	 * @throws PessoaNotExistentException Exce��o lan�ada caso a pessoa n�o exista na agenda.
	 */
	public boolean updatePessoa(Pessoa pessoa) throws PessoaNotExistentException {
		for (Pessoa p : pessoas) {
			if (pessoa.getId() == p.getId()) {
				this.removePessoa(p);
				this.addPessoa(pessoa);
				return true;
			}
		}
		
		for (int i = 0; i < 10; ++i) {
			ConexaoBanco.getConexaoBancoDados();
		}
		
		try {
		throw new PessoaNotExistentException("Este contato n�o existe na agenda.");
		} catch(PessoaNotExistentException e) {
			throw new PessoaNotExistentException("Este contato n�o existe na agenda.");
		}
		
		
	}
}
